#coding=utf-8
import urllib.request
import json
import re
import save
import config
import datetime

now_num = 1# 当前抓取数量

# 获取列表
def getList(data):
	global now_num

	par = {
		'per_page':config.per_page,# 每页显示数量
		'page':data['page'],# 当前页数
		'_':data['time13'],# 时间戳
	}
	par = urllib.parse.urlencode(par)
	url = 'https://36kr.com/api/search-column/mainsite?' + par
	rq = urllib.request.Request(url)
	rs = urllib.request.urlopen(rq).read()
	rs = json.loads(rs)['data']['items']

	#日志
	log = '\n列表：' + str(data['page']) + '\n'
	print(log)
	data['log_file'].write(log)

	for x in rs:
		# 只获取文章
		if x['_type'] == 'post':
			url = 'https://36kr.com/p/' + str(x['id']) + '.html'
			# 更新分类
			column = {
				'column_id' : int(x['column_id']),# 分类id
				'column_name' : x['column_name'],# 分类名称
			}
			save.updateClassify(column)
			# 加入文章数据
			list_data = {
				'id' : x['id'],# 原文id
				'column_id' : int(x['column_id']),# 分类id
				'extraction_tags' : x['extraction_tags'],# 扩展标签
				'cover' : x['cover'],# 封面
				'published_at' : datetime.datetime.strptime(x['published_at'],'%Y-%m-%dT%H:%M:%S+08:00'),# 发布时间
				'summary' : x['summary'],# 概要
				'title' : x['title'],# 标题
				'user_info' : x['user_info'],# 作者信息
			}
			getDetail(url,list_data)
			# stete = getDetail(url,list_data)

			#日志
			log = str(now_num) + '：' + x['title'] + '\n'
			print(log)
			data['log_file'].write(log)
			now_num += 1

			# 退出线程
			# if not stete:return

	data['page'] += 1
	getList(data)

# 获取详情
def getDetail(url,list_data):
	opener = urllib.request.build_opener()
	rs = opener.open(url).read().decode('utf-8')
	# 正则获取内容
	# f = open("out.txt", "w",encoding='utf-8')
	rs = re.search('<script>var props=(.*?)</script>',rs).group(1)
	con = re.search('"content":"(.*?)","',rs).group(1)# 获取内容
	# 图片链接处理，去除盗链防护
	con = re.sub(r'<img(.*?)src=\\"(.*?)\\"',lambda m:'<img'+m.group(1)+'src="/img?url=' + urllib.parse.quote(m.group(2)) + '"',con)
	# 获取3个以内的图片
	imgs = re.findall(r'<img.*?src="(.*?)"',con)
	imgs = imgs[0:3]
	# 去掉超链接
	con = re.sub('<a.*?>(.*?)</a>',lambda m:m.group(1),con)
	
	article = {
		'imgs' : imgs,
		# 'title':re.search('"title":"(.*?)","',rs).group(1),# 获取标题
		# 'author':re.search('"user":.*?"name":"(.*?)"',rs).group(1),# 获取作者信息
		# 'column':re.search('"column":.*?"name":"(.*?)"',rs).group(1),# 获取标签
		# 'summary':re.search('"summary":"(.*?)​​","',rs).group(1),# 获取概要
		'con' : con,# 获取内容
		# 'create_time':re.search('"created_at":"(.{19})"',rs).group(1),# 创建时间
		# 'update_time':re.search('"updated_at":"(.{19})"',rs).group(1),# 更新时间
		# 'publish_time':re.search('"published_at":"(.{19})"',rs).group(1),# 发布时间
	}
	list_data.update(article)
	save.add(list_data)
	# if save.add(list_data):return 1